home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / Memory.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  17.3 KB  |  583 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        Memory.mod
  3.  
  4.      Contains:    Memory Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$IF UNDEFINED OLDROUTINENAMES*)
  21.   (*$SET OLDROUTINENAMES FALSE*)
  22. (*$END*)
  23. (*$IF UNDEFINED SystemSevenFiveOrLater *)
  24.   (*$SET SystemSevenFiveOrLater FALSE*)
  25. (*$END*)
  26. (*$IF UNDEFINED SystemSevenOrLater *)
  27.   (*$IF GENERATINGCFM *)
  28.     (*$SET SystemSevenOrLater TRUE*)
  29.   (*$ELSE*)
  30.     (*$SET SystemSevenOrLater SystemSevenFiveOrLater*)
  31.   (*$END*)
  32. (*$END*)
  33. (*$IF UNDEFINED SystemSixOrLater *)
  34.   (*$SET SystemSixOrLater SystemSevenOrLater*)
  35. (*$END*)
  36. (*$TAGS-*)
  37. (*$CALLING PASCAL*)
  38. MODULE Memory;
  39.  
  40. IMPORT SYSTEM, Types;
  41.  
  42. (* $PUSH*)
  43. (* $ALIGN MAC68K*)
  44. (* $LibExport+*)
  45.  
  46. CONST
  47.     maxSize*                        = $800000;                        (*Max data block size is 8 megabytes*)
  48.     defaultPhysicalEntryCount*    = 8;
  49. (* values returned from the GetPageState function *)
  50.     kPageInMemory*                = 0;
  51.     kPageOnDisk*                    = 1;
  52.     kNotPaged*                    = 2;
  53.  
  54. (* masks for Zone->heapType field *)
  55.     k32BitHeap*                    = 1;                            (* valid in all Memory Managers *)
  56.     kNewStyleHeap*                = 2;                            (* true if new Heap Manager is present *)
  57.     kNewDebugHeap*                = 4;                            (* true if new Heap Manager is running in debug mode on this heap *)
  58.  
  59. (* size of a block in bytes *)
  60.     
  61. TYPE
  62.     Size* = LONGINT;
  63.  
  64.     GrowZoneProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (cbNeeded: Size): LONGINT;
  65.     PurgeProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (blockToPurge: Types.Handle);
  66.     (*
  67.         UserFnProcPtr uses register based parameters on the 68k and cannot
  68.         be written in or called from a high-level language without the help of
  69.         mixed mode or assembly glue.
  70.  
  71.         In*:
  72.          => *parameter      A0.L
  73.     *)
  74.     UserFnProcPtr* = Types.Register68kProcPtr;  (* register PROCEDURE UserFn*(parameter: (*ΔΔUNIVΔΔ*) Types.Ptr); *)
  75.     GrowZoneUPP* = Types.UniversalProcPtr;
  76.     PurgeUPP* = Types.UniversalProcPtr;
  77.     UserFnUPP* = Types.UniversalProcPtr;
  78.  
  79.     THz* = POINTER TO Zone;
  80.  
  81.     Zone* = RECORD
  82.         bkLim*:                    Types.Ptr;
  83.         purgePtr*:                Types.Ptr;
  84.         hFstFree*:                Types.Ptr;
  85.         zcbFree*:                LONGINT;
  86.         gzProc*:                    GrowZoneUPP;
  87.         moreMast*:                INTEGER;
  88.         flags*:                    INTEGER;
  89.         cntRel*:                    INTEGER;
  90.         maxRel*:                    INTEGER;
  91.         cntNRel*:                INTEGER;
  92.         heapType*:                Types.Byte; (*ΔΔ SInt8 *)
  93.         unused*:                    Types.Byte; (*ΔΔ SInt8 *)
  94.         cntEmpty*:                INTEGER;
  95.         cntHandles*:                INTEGER;
  96.         minCBFree*:                LONGINT;
  97.         purgeProc*:                PurgeUPP;
  98.         sparePtr*:                Types.Ptr;
  99.         allocPtr*:                Types.Ptr;
  100.         heapData*:                INTEGER;
  101.     END;
  102.  
  103.     MemoryBlock* = RECORD
  104.         address*:                Types.Ptr;
  105.         count*:                    LONGINT;
  106.     END;
  107.  
  108.     LogicalToPhysicalTable* = RECORD
  109.         logical*:                MemoryBlock;
  110.         physical*:                ARRAY (*ΔΔ[0..*)defaultPhysicalEntryCount(*ΔΔ -1]ΔΔ*) OF MemoryBlock;
  111.     END;
  112.  
  113.     PageState* = INTEGER;
  114.  
  115.     StatusRegisterContents* = INTEGER;
  116.  
  117. CONST
  118.     uppGrowZoneProcInfo* = $000000F0; (* PROCEDURE (4 byte param): 4 byte result; *)
  119.     uppPurgeProcInfo* = $000000C0; (* PROCEDURE (4 byte param); *)
  120.     uppUserFnProcInfo* = $00009802; (* Register PROCEDURE (4 bytes in A0); *)
  121.  
  122. PROCEDURE NewGrowZoneProc*(userRoutine: GrowZoneProcPtr): GrowZoneUPP;
  123.     (*$IF NOT GENERATINGCFM *)
  124.     INLINE PASCAL $2E9F;
  125.     (*$END*)
  126.  
  127. PROCEDURE NewPurgeProc*(userRoutine: PurgeProcPtr): PurgeUPP;
  128.     (*$IF NOT GENERATINGCFM *)
  129.     INLINE PASCAL $2E9F;
  130.     (*$END*)
  131.  
  132. PROCEDURE NewUserFnProc*(userRoutine: UserFnProcPtr): UserFnUPP;
  133.     (*$IF NOT GENERATINGCFM *)
  134.     INLINE PASCAL $2E9F;
  135.     (*$END*)
  136.  
  137. PROCEDURE CallGrowZoneProc*(cbNeeded: Size; userRoutine: GrowZoneUPP): LONGINT;
  138.     (*$IF NOT GENERATINGCFM*)
  139.     INLINE PASCAL $205F, $4E90;
  140.     (*$END*)
  141.  
  142. PROCEDURE CallPurgeProc*(blockToPurge: Types.Handle; userRoutine: PurgeUPP);
  143.     (*$IF NOT GENERATINGCFM*)
  144.     INLINE PASCAL $205F, $4E90;
  145.     (*$END*)
  146.  
  147. PROCEDURE CallUserFnProc*(parameter: (*ΔΔUNIVΔΔ*) Types.Ptr; userRoutine: UserFnUPP);
  148.     (*$IF NOT GENERATINGCFM*)
  149.     INLINE PASCAL ; (*••*)
  150.     (*To be implemented*:  Glue to move parameters into registers.*)
  151.     (*$END*)
  152. PROCEDURE GetApplLimit*(): Types.Ptr;
  153.     (*$IF NOT CFMSYSTEMCALLS*)
  154.     INLINE PASCAL $2EB8, $0130;            (* MOVE.l $0130,(SP) *)
  155.     (*$END*)
  156.  
  157. PROCEDURE SystemZone*(): THz;
  158.     (*$IF NOT CFMSYSTEMCALLS*)
  159.     INLINE PASCAL $2EB8, $02A6;            (* MOVE.l $02A6,(SP) *)
  160.     (*$END*)
  161.  
  162. PROCEDURE ApplicationZone*(): THz;
  163.     (*$IF NOT CFMSYSTEMCALLS*)
  164.     INLINE PASCAL $2EB8, $02AA;            (* MOVE.l $02AA,(SP) *)
  165.     (*$END*)
  166.  
  167. PROCEDURE GZSaveHnd*(): Types.Handle;
  168.     (*$IF NOT CFMSYSTEMCALLS*)
  169.     INLINE PASCAL $2EB8, $0328;            (* MOVE.l $0328,(SP) *)
  170.     (*$END*)
  171.  
  172. PROCEDURE TopMem*(): Types.Ptr;
  173.     (*$IF NOT CFMSYSTEMCALLS*)
  174.     INLINE PASCAL $2EB8, $0108;            (* MOVE.l $0108,(SP) *)
  175.     (*$END*)
  176.  
  177. PROCEDURE MemError*(): Types.OSErr;
  178.     (*$IF NOT CFMSYSTEMCALLS*)
  179.     INLINE PASCAL $3EB8, $0220;            (* MOVE.w $0220,(SP) *)
  180.     (*$END*)
  181.  
  182. PROCEDURE GetZone*(): THz;
  183.     (*$IF NOT GENERATINGCFM*)
  184.     INLINE PASCAL $A11A, $2E88;
  185.     (*$END*)
  186. PROCEDURE NewHandle*(byteCount: Size): Types.Handle;
  187.     (*$IF NOT GENERATINGCFM*)
  188.     INLINE PASCAL $201F, $A122, $2E88;
  189.     (*$END*)
  190. PROCEDURE NewHandleSys*(byteCount: Size): Types.Handle;
  191.     (*$IF NOT GENERATINGCFM*)
  192.     INLINE PASCAL $201F, $A522, $2E88;
  193.     (*$END*)
  194. PROCEDURE NewHandleClear*(byteCount: Size): Types.Handle;
  195.     (*$IF NOT GENERATINGCFM*)
  196.     INLINE PASCAL $201F, $A322, $2E88;
  197.     (*$END*)
  198. PROCEDURE NewHandleSysClear*(byteCount: Size): Types.Handle;
  199.     (*$IF NOT GENERATINGCFM*)
  200.     INLINE PASCAL $201F, $A722, $2E88;
  201.     (*$END*)
  202. PROCEDURE HandleZone*(h: Types.Handle): THz;
  203.     (*$IF NOT GENERATINGCFM*)
  204.     INLINE PASCAL $205F, $A126, $2E88;
  205.     (*$END*)
  206. PROCEDURE RecoverHandle*(p: Types.Ptr): Types.Handle;
  207.     (*$IF NOT GENERATINGCFM*)
  208.     INLINE PASCAL $205F, $A128, $2E88;
  209.     (*$END*)
  210. PROCEDURE RecoverHandleSys*(p: Types.Ptr): Types.Handle;
  211.     (*$IF NOT GENERATINGCFM*)
  212.     INLINE PASCAL $205F, $A528, $2E88;
  213.     (*$END*)
  214. PROCEDURE NewPtr*(byteCount: Size): Types.Ptr;
  215.     (*$IF NOT GENERATINGCFM*)
  216.     INLINE PASCAL $201F, $A11E, $2E88;
  217.     (*$END*)
  218. PROCEDURE NewPtrSys*(byteCount: Size): Types.Ptr;
  219.     (*$IF NOT GENERATINGCFM*)
  220.     INLINE PASCAL $201F, $A51E, $2E88;
  221.     (*$END*)
  222. PROCEDURE NewPtrClear*(byteCount: Size): Types.Ptr;
  223.     (*$IF NOT GENERATINGCFM*)
  224.     INLINE PASCAL $201F, $A31E, $2E88;
  225.     (*$END*)
  226. PROCEDURE NewPtrSysClear*(byteCount: Size): Types.Ptr;
  227.     (*$IF NOT GENERATINGCFM*)
  228.     INLINE PASCAL $201F, $A71E, $2E88;
  229.     (*$END*)
  230. PROCEDURE PtrZone*(p: Types.Ptr): THz;
  231.     (*$IF NOT GENERATINGCFM*)
  232.     INLINE PASCAL $205F, $A148, $2E88;
  233.     (*$END*)
  234. PROCEDURE MaxBlock*(): LONGINT;
  235.     (*$IF NOT GENERATINGCFM*)
  236.     INLINE PASCAL $A061, $2E80;
  237.     (*$END*)
  238. PROCEDURE MaxBlockSys*(): LONGINT;
  239.     (*$IF NOT GENERATINGCFM*)
  240.     INLINE PASCAL $A461, $2E80;
  241.     (*$END*)
  242. PROCEDURE StackSpace*(): LONGINT;
  243.     (*$IF NOT GENERATINGCFM*)
  244.     INLINE PASCAL $A065, $2E80;
  245.     (*$END*)
  246. PROCEDURE NewEmptyHandle*(): Types.Handle;
  247.     (*$IF NOT GENERATINGCFM*)
  248.     INLINE PASCAL $A166, $2E88;
  249.     (*$END*)
  250. PROCEDURE NewEmptyHandleSys*(): Types.Handle;
  251.     (*$IF NOT GENERATINGCFM*)
  252.     INLINE PASCAL $A566, $2E88;
  253.     (*$END*)
  254. PROCEDURE HLock*(h: Types.Handle);
  255.     (*$IF NOT GENERATINGCFM*)
  256.     INLINE PASCAL $205F, $A029;
  257.     (*$END*)
  258. PROCEDURE HUnlock*(h: Types.Handle);
  259.     (*$IF NOT GENERATINGCFM*)
  260.     INLINE PASCAL $205F, $A02A;
  261.     (*$END*)
  262. PROCEDURE HPurge*(h: Types.Handle);
  263.     (*$IF NOT GENERATINGCFM*)
  264.     INLINE PASCAL $205F, $A049;
  265.     (*$END*)
  266. PROCEDURE HNoPurge*(h: Types.Handle);
  267.     (*$IF NOT GENERATINGCFM*)
  268.     INLINE PASCAL $205F, $A04A;
  269.     (*$END*)
  270. PROCEDURE HLockHi*(h: Types.Handle);
  271.     (*$IF NOT GENERATINGCFM*)
  272.     INLINE PASCAL $205F, $A064, $A029;
  273.     (*$END*)
  274. PROCEDURE TempNewHandle*(logicalSize: Size; VAR resultCode: Types.OSErr): Types.Handle;
  275.     (*$IF NOT GENERATINGCFM*)
  276.     INLINE PASCAL $3F3C, $001D, $A88F;
  277.     (*$END*)
  278. PROCEDURE TempMaxMem*(VAR grow: Size): Size;
  279.     (*$IF NOT GENERATINGCFM*)
  280.     INLINE PASCAL $3F3C, $0015, $A88F;
  281.     (*$END*)
  282. PROCEDURE TempFreeMem*(): LONGINT;
  283.     (*$IF NOT GENERATINGCFM*)
  284.     INLINE PASCAL $3F3C, $0018, $A88F;
  285.     (*$END*)
  286. (*  Temporary Memory routines renamed, but obsolete, in System 7.0 and later.  *)
  287. PROCEDURE TempHLock*(h: Types.Handle; VAR resultCode: Types.OSErr);
  288.     (*$IF NOT GENERATINGCFM*)
  289.     INLINE PASCAL $3F3C, $001E, $A88F;
  290.     (*$END*)
  291. PROCEDURE TempHUnlock*(h: Types.Handle; VAR resultCode: Types.OSErr);
  292.     (*$IF NOT GENERATINGCFM*)
  293.     INLINE PASCAL $3F3C, $001F, $A88F;
  294.     (*$END*)
  295. PROCEDURE TempDisposeHandle*(h: Types.Handle; VAR resultCode: Types.OSErr);
  296.     (*$IF NOT GENERATINGCFM*)
  297.     INLINE PASCAL $3F3C, $0020, $A88F;
  298.     (*$END*)
  299. PROCEDURE TempTopMem*(): Types.Ptr;
  300.     (*$IF NOT GENERATINGCFM*)
  301.     INLINE PASCAL $3F3C, $0016, $A88F;
  302.     (*$END*)
  303. PROCEDURE InitApplZone*;
  304.     (*$IF NOT GENERATINGCFM*)
  305.     INLINE PASCAL $A02C;
  306.     (*$END*)
  307. PROCEDURE InitZone*(pgrowZone: GrowZoneUPP; cmoreMasters: INTEGER; limitPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; startPtr: (*ΔΔUNIVΔΔ*) Types.Ptr);
  308.     EXTERNAL PASCAL;
  309. PROCEDURE SetZone*(hz: THz);
  310.     (*$IF NOT GENERATINGCFM*)
  311.     INLINE PASCAL $205F, $A01B;
  312.     (*$END*)
  313. PROCEDURE CompactMem*(cbNeeded: Size): Size;
  314.     (*$IF NOT GENERATINGCFM*)
  315.     INLINE PASCAL $201F, $A04C, $2E80;
  316.     (*$END*)
  317. PROCEDURE CompactMemSys*(cbNeeded: Size): Size;
  318.     (*$IF NOT GENERATINGCFM*)
  319.     INLINE PASCAL $201F, $A44C, $2E80;
  320.     (*$END*)
  321. PROCEDURE PurgeMem*(cbNeeded: Size);
  322.     (*$IF NOT GENERATINGCFM*)
  323.     INLINE PASCAL $201F, $A04D;
  324.     (*$END*)
  325. PROCEDURE PurgeMemSys*(cbNeeded: Size);
  326.     (*$IF NOT GENERATINGCFM*)
  327.     INLINE PASCAL $201F, $A44D;
  328.     (*$END*)
  329. PROCEDURE FreeMem*(): LONGINT;
  330.     (*$IF NOT GENERATINGCFM*)
  331.     INLINE PASCAL $A01C, $2E80;
  332.     (*$END*)
  333. PROCEDURE FreeMemSys*(): LONGINT;
  334.     (*$IF NOT GENERATINGCFM*)
  335.     INLINE PASCAL $A41C, $2E80;
  336.     (*$END*)
  337. PROCEDURE ReserveMem*(cbNeeded: Size);
  338.     (*$IF NOT GENERATINGCFM*)
  339.     INLINE PASCAL $201F, $A040;
  340.     (*$END*)
  341. PROCEDURE ReserveMemSys*(cbNeeded: Size);
  342.     (*$IF NOT GENERATINGCFM*)
  343.     INLINE PASCAL $201F, $A440;
  344.     (*$END*)
  345. PROCEDURE MaxMem*(VAR grow: Size): Size;
  346.     (*$IF NOT GENERATINGCFM*)
  347.     INLINE PASCAL $225F, $A11D, $2288, $2E80;
  348.     (*$END*)
  349. PROCEDURE MaxMemSys*(VAR grow: Size): Size;
  350.     (*$IF NOT GENERATINGCFM*)
  351.     INLINE PASCAL $225F, $A51D, $2288, $2E80;
  352.     (*$END*)
  353. PROCEDURE SetGrowZone*(growZone: GrowZoneUPP);
  354.     (*$IF NOT GENERATINGCFM*)
  355.     INLINE PASCAL $205F, $A04B;
  356.     (*$END*)
  357. PROCEDURE SetApplLimit*(zoneLimit: (*ΔΔUNIVΔΔ*) Types.Ptr);
  358.     (*$IF NOT GENERATINGCFM*)
  359.     INLINE PASCAL $205F, $A02D;
  360.     (*$END*)
  361. PROCEDURE MoveHHi*(h: Types.Handle);
  362.     (*$IF NOT GENERATINGCFM*)
  363.     INLINE PASCAL $205F, $A064;
  364.     (*$END*)
  365. PROCEDURE DisposePtr*(p: Types.Ptr);
  366.     (*$IF NOT GENERATINGCFM*)
  367.     INLINE PASCAL $205F, $A01F;
  368.     (*$END*)
  369. PROCEDURE GetPtrSize*(p: Types.Ptr): Size;
  370.     EXTERNAL PASCAL;
  371. PROCEDURE SetPtrSize*(p: Types.Ptr; newSize: Size);
  372.     (*$IF NOT GENERATINGCFM*)
  373.     INLINE PASCAL $201F, $205F, $A020;
  374.     (*$END*)
  375. PROCEDURE DisposeHandle*(h: Types.Handle);
  376.     (*$IF NOT GENERATINGCFM*)
  377.     INLINE PASCAL $205F, $A023;
  378.     (*$END*)
  379. PROCEDURE SetHandleSize*(h: Types.Handle; newSize: Size);
  380.     (*$IF NOT GENERATINGCFM*)
  381.     INLINE PASCAL $201F, $205F, $A024;
  382.     (*$END*)
  383. PROCEDURE GetHandleSize*(h: Types.Handle): Size;
  384.     EXTERNAL PASCAL;
  385. PROCEDURE InlineGetHandleSize*(h: Types.Handle): Size;
  386.     (*$IF NOT GENERATINGCFM*)
  387.     INLINE PASCAL $205F, $A025, $2E80;
  388.     (*$END*)
  389. PROCEDURE ReallocateHandle*(h: Types.Handle; byteCount: Size);
  390.     (*$IF NOT GENERATINGCFM*)
  391.     INLINE PASCAL $201F, $205F, $A027;
  392.     (*$END*)
  393. PROCEDURE EmptyHandle*(h: Types.Handle);
  394.     (*$IF NOT GENERATINGCFM*)
  395.     INLINE PASCAL $205F, $A02B;
  396.     (*$END*)
  397. PROCEDURE HSetRBit*(h: Types.Handle);
  398.     (*$IF NOT GENERATINGCFM*)
  399.     INLINE PASCAL $205F, $A067;
  400.     (*$END*)
  401. PROCEDURE HClrRBit*(h: Types.Handle);
  402.     (*$IF NOT GENERATINGCFM*)
  403.     INLINE PASCAL $205F, $A068;
  404.     (*$END*)
  405. PROCEDURE MoreMasters*;
  406.     (*$IF NOT GENERATINGCFM*)
  407.     INLINE PASCAL $A036;
  408.     (*$END*)
  409. PROCEDURE BlockMove*(srcPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; destPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; byteCount: Size);
  410.     (*$IF NOT GENERATINGCFM*)
  411.     INLINE PASCAL $201F, $225F, $205F, $A02E;
  412.     (*$END*)
  413. PROCEDURE BlockMoveData*(srcPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; destPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; byteCount: Size);
  414.     (*$IF NOT GENERATINGCFM*)
  415.     INLINE PASCAL $201F, $225F, $205F, $A22E;
  416.     (*$END*)
  417. PROCEDURE PurgeSpace*(VAR total: LONGINT; VAR contig: LONGINT);
  418.     EXTERNAL PASCAL;
  419. PROCEDURE HGetState*(h: Types.Handle): Types.SInt8;
  420.     (*$IF NOT GENERATINGCFM*)
  421.     INLINE PASCAL $205F, $A069, $1E80;
  422.     (*$END*)
  423. PROCEDURE HSetState*(h: Types.Handle; flags: Types.ByteParameter);
  424.     (*$IF NOT GENERATINGCFM*)
  425.     INLINE PASCAL $101F, $205F, $A06A;
  426.     (*$END*)
  427. PROCEDURE SetApplBase*(startPtr: (*ΔΔUNIVΔΔ*) Types.Ptr);
  428.     (*$IF NOT GENERATINGCFM*)
  429.     INLINE PASCAL $205F, $A057;
  430.     (*$END*)
  431. PROCEDURE MaxApplZone*;
  432.     (*$IF NOT GENERATINGCFM*)
  433.     INLINE PASCAL $A063;
  434.     (*$END*)
  435. PROCEDURE HoldMemory*(address: (*ΔΔUNIVΔΔ*) Types.Ptr; count: LONGINT): Types.OSErr;
  436.     (*$IF NOT GENERATINGCFM*)
  437.     INLINE PASCAL $225F, $205F, $7000, $A05C, $3E80;
  438.     (*$END*)
  439. PROCEDURE UnholdMemory*(address: (*ΔΔUNIVΔΔ*) Types.Ptr; count: LONGINT): Types.OSErr;
  440.     (*$IF NOT GENERATINGCFM*)
  441.     INLINE PASCAL $225F, $205F, $7001, $A05C, $3E80;
  442.     (*$END*)
  443. PROCEDURE LockMemory*(address: (*ΔΔUNIVΔΔ*) Types.Ptr; count: LONGINT): Types.OSErr;
  444.     (*$IF NOT GENERATINGCFM*)
  445.     INLINE PASCAL $225F, $205F, $7002, $A05C, $3E80;
  446.     (*$END*)
  447. PROCEDURE LockMemoryContiguous*(address: (*ΔΔUNIVΔΔ*) Types.Ptr; count: LONGINT): Types.OSErr;
  448.     (*$IF NOT GENERATINGCFM*)
  449.     INLINE PASCAL $225F, $205F, $7004, $A05C, $3E80;
  450.     (*$END*)
  451. PROCEDURE UnlockMemory*(address: (*ΔΔUNIVΔΔ*) Types.Ptr; count: LONGINT): Types.OSErr;
  452.     (*$IF NOT GENERATINGCFM*)
  453.     INLINE PASCAL $225F, $205F, $7003, $A05C, $3E80;
  454.     (*$END*)
  455. PROCEDURE GetPhysical*(VAR addresses: LogicalToPhysicalTable; VAR physicalEntryCount: LONGINT): Types.OSErr;
  456.     EXTERNAL PASCAL;
  457. PROCEDURE DeferUserFn*(userFunction: UserFnUPP; argument: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.OSErr;
  458.     (*$IF NOT GENERATINGCFM*)
  459.     INLINE PASCAL $201F, $205F, $A08F, $3E80;
  460.     (*$END*)
  461. PROCEDURE DebuggerGetMax*(): LONGINT;
  462.     (*$IF NOT GENERATINGCFM*)
  463.     INLINE PASCAL $7000, $A08D, $2E80;
  464.     (*$END*)
  465. PROCEDURE DebuggerEnter*;
  466.     (*$IF NOT GENERATINGCFM*)
  467.     INLINE PASCAL $7001, $A08D;
  468.     (*$END*)
  469. PROCEDURE DebuggerExit*;
  470.     (*$IF NOT GENERATINGCFM*)
  471.     INLINE PASCAL $7002, $A08D;
  472.     (*$END*)
  473. PROCEDURE DebuggerPoll*;
  474.     (*$IF NOT GENERATINGCFM*)
  475.     INLINE PASCAL $7003, $A08D;
  476.     (*$END*)
  477. PROCEDURE GetPageState*(address: (*ΔΔUNIVΔΔ*) Types.Ptr): PageState;
  478.     (*$IF NOT GENERATINGCFM*)
  479.     INLINE PASCAL $205F, $7004, $A08D, $3E80;
  480.     (*$END*)
  481. PROCEDURE PageFaultFatal*(): BOOLEAN;
  482.     (*$IF NOT GENERATINGCFM*)
  483.     INLINE PASCAL $7005, $A08D, $1E80;
  484.     (*$END*)
  485. PROCEDURE DebuggerLockMemory*(address: (*ΔΔUNIVΔΔ*) Types.Ptr; count: LONGINT): Types.OSErr;
  486.     (*$IF NOT GENERATINGCFM*)
  487.     INLINE PASCAL $225F, $205F, $7006, $A08D, $3E80;
  488.     (*$END*)
  489. PROCEDURE DebuggerUnlockMemory*(address: (*ΔΔUNIVΔΔ*) Types.Ptr; count: LONGINT): Types.OSErr;
  490.     (*$IF NOT GENERATINGCFM*)
  491.     INLINE PASCAL $225F, $205F, $7007, $A08D, $3E80;
  492.     (*$END*)
  493. PROCEDURE EnterSupervisorMode*(): StatusRegisterContents;
  494.     (*$IF NOT GENERATINGCFM*)
  495.     INLINE PASCAL $7008, $A08D, $3E80;
  496.     (*$END*)
  497. (* StripAddress and Translate24To32 macro to nothing on PowerPC
  498.    StripAddress is implemented as a trap in System 6 or later *)
  499. (*$IF SystemSixOrLater *)
  500. PROCEDURE StripAddress*(theAddress: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.Ptr;
  501.     (*$IF NOT GENERATINGCFM*)
  502.     INLINE PASCAL $201F, $A055, $2E80;
  503.     (*$END*)
  504. (*$ELSE*)
  505. PROCEDURE StripAddress*(theAddress: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.Ptr;
  506.     EXTERNAL PASCAL;
  507. (*$END*)
  508. PROCEDURE Translate24To32*(addr24: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.Ptr;
  509.     (*$IF NOT GENERATINGCFM*)
  510.     INLINE PASCAL $201F, $A091, $2E80;
  511.     (*$END*)
  512. PROCEDURE HandToHand*(VAR theHndl: Types.Handle): Types.OSErr;
  513.     EXTERNAL PASCAL;
  514. PROCEDURE PtrToXHand*(srcPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; dstHndl: Types.Handle; size: LONGINT): Types.OSErr;
  515.     (*$IF NOT GENERATINGCFM*)
  516.     INLINE PASCAL $201F, $225F, $205F, $A9E2, $3E80;
  517.     (*$END*)
  518. PROCEDURE PtrToHand*(srcPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR dstHndl: Types.Handle; size: LONGINT): Types.OSErr;
  519.     EXTERNAL PASCAL;
  520. PROCEDURE HandAndHand*(hand1: Types.Handle; hand2: Types.Handle): Types.OSErr;
  521.     (*$IF NOT GENERATINGCFM*)
  522.     INLINE PASCAL $225F, $205F, $A9E4, $3E80;
  523.     (*$END*)
  524. PROCEDURE PtrAndHand*(ptr1: (*ΔΔUNIVΔΔ*) Types.Ptr; hand2: Types.Handle; size: LONGINT): Types.OSErr;
  525.     (*$IF NOT GENERATINGCFM*)
  526.     INLINE PASCAL $201F, $225F, $205F, $A9EF, $3E80;
  527.     (*$END*)
  528. (*$IF OLDROUTINENAMES *)
  529. PROCEDURE ApplicZone*(): THz;
  530.     (*$IF NOT GENERATINGCFM*)
  531.     INLINE PASCAL $2EB8, $02AA;
  532.     (*$END*)
  533. PROCEDURE MFTempNewHandle*(logicalSize: Size; VAR resultCode: Types.OSErr): Types.Handle;
  534.     (*$IF NOT GENERATINGCFM*)
  535.     INLINE PASCAL $3F3C, $001D, $A88F;
  536.     (*$END*)
  537. PROCEDURE MFMaxMem*(VAR grow: Size): Size;
  538.     (*$IF NOT GENERATINGCFM*)
  539.     INLINE PASCAL $3F3C, $0015, $A88F;
  540.     (*$END*)
  541. PROCEDURE MFFreeMem*(): LONGINT;
  542.     (*$IF NOT GENERATINGCFM*)
  543.     INLINE PASCAL $3F3C, $0018, $A88F;
  544.     (*$END*)
  545. PROCEDURE MFTempHLock*(h: Types.Handle; VAR resultCode: Types.OSErr);
  546.     (*$IF NOT GENERATINGCFM*)
  547.     INLINE PASCAL $3F3C, $001E, $A88F;
  548.     (*$END*)
  549. PROCEDURE MFTempHUnlock*(h: Types.Handle; VAR resultCode: Types.OSErr);
  550.     (*$IF NOT GENERATINGCFM*)
  551.     INLINE PASCAL $3F3C, $001F, $A88F;
  552.     (*$END*)
  553. PROCEDURE MFTempDisposHandle*(h: Types.Handle; VAR resultCode: Types.OSErr);
  554.     (*$IF NOT GENERATINGCFM*)
  555.     INLINE PASCAL $3F3C, $0020, $A88F;
  556.     (*$END*)
  557. PROCEDURE MFTopMem*(): Types.Ptr;
  558.     (*$IF NOT GENERATINGCFM*)
  559.     INLINE PASCAL $3F3C, $0016, $A88F;
  560.     (*$END*)
  561. PROCEDURE ResrvMem*(cbNeeded: Size);
  562.     (*$IF NOT GENERATINGCFM*)
  563.     INLINE PASCAL $201F, $A040;
  564.     (*$END*)
  565. PROCEDURE DisposPtr*(p: Types.Ptr);
  566.     (*$IF NOT GENERATINGCFM*)
  567.     INLINE PASCAL $205F, $A01F;
  568.     (*$END*)
  569. PROCEDURE DisposHandle*(h: Types.Handle);
  570.     (*$IF NOT GENERATINGCFM*)
  571.     INLINE PASCAL $205F, $A023;
  572.     (*$END*)
  573. PROCEDURE ReallocHandle*(h: Types.Handle; byteCount: Size);
  574.     (*$IF NOT GENERATINGCFM*)
  575.     INLINE PASCAL $201F, $205F, $A027;
  576.     (*$END*)
  577. (*$END*)
  578.  
  579. (* $ALIGN RESET*)
  580. (* $POP*)
  581.  
  582.  END Memory.
  583.